import request from "@/utils/request";
import type { typePageInfo } from "@/api/trademark";

//请求1：   添加SKU
export const reqSaveSkuInfo = (data: typeReqSaveSkuInfoParm) => {
  return request.post<any, any>(`/product/saveSkuInfo`, data);
};
//类型1-1： 添加SKU-请求参类型
export interface typeReqSaveSkuInfoParm {
  spuId: number; //所属SPU的ID
  tmId: number; //所属品牌ID
  category3Id: number; //所属分类ID
  skuName: string; //SKU名称
  price: number; //价格
  weight: number; //重量
  skuDesc: string; //sku规格描述
  skuDefaultImg: string; //sku默认图片
  skuImageList: typeskuImage[]; //sku图片列表
  skuAttrValueList: typeSkuAttrValue[]; //平台属性
  skuSaleAttrValueList: typeSkuSaleAttrValue[]; //销售属性
}
//类型1-2： 添加SKU-请求参-skuImageList内单个对象类型
export interface typeskuImage {
  id: number;
  spuId: number;
  imgName: string;
  imgUrl: string;
  isDefault: boolean;
}
//类型1-3： 添加SKU-请求参-skuAttrValueList内单个对象类型
export interface typeSkuAttrValue {
  attrId: number;
  valueId: number;
}
//类型1-4： 添加SKU-请求参-skuSaleAttrValueList内单个对象类型
export interface typeSkuSaleAttrValue {
  saleAttrId: number;
  saleAttrValueId: number;
}

//请求2： 获取spuid下的所有sku列表
export const reqFindBySpuId = (spuId: number) => {
  return request.get<any, typeReqFindBySpuIdParm>(
    `/product/findBySpuId/${spuId}`
  );
};
//类型2-1   请求2 获取spuid下的所有sku列表  返回值类型
export type typeReqFindBySpuIdParm = typeFindBySpuId[];
//类型2-2 请求2 返回值数组内单个对象类型
export interface typeFindBySpuId {
  id: number; //SKU的ID
  spuId: number; //所属SPU的ID
  price: number; //价格
  skuName: string; //SKU名称
  skuDesc: string; //SKU规格描述
  weight: string; //重量
  tmId: number; //所属品牌ID
  category3Id: number; //所属分类ID
  skuDefaultImg: string; //默认图片
  isSale: number; //是否上架
  createTime: string; //创建时间
}

//请求3:  获取sku的分页列表
export const reqSkuPaginationList = (page = 1, limit = 5) => {
  return request.get<any, typePageInfo<typeFindBySpuId[]>>(
    `/product/list/${page}/${limit}`
  );
};

//请求4:  上架指定SKU
export const reqOnSale = (id: number) => {
  return request.get<any, any>(`/product/onSale/${id}`);
};
//请求5:  下架指定SKU
export const reqCancelSale = (id: number) => {
  return request.get<any, any>(`/product/cancelSale/${id}`);
};

//请求6:  获取指定id的SKU
export const reqGetSkuById = (skuId: number) => {
  return request.get<any,typeReqGetSkuByIdResponse>(`/product/getSkuById/${skuId}`);
};
//类型6-1 请求6 获取指定id的SKU 返回类型
export interface typeReqGetSkuByIdResponse extends typeFindBySpuId {
  skuImageList: ResSkuImage[];
  skuAttrValueList: ResSkuAttrValue[];
  skuSaleAttrValueList: ResSkuSaleAttrValue[];
}
//类型6-2 获取指定id的SKU 返回类型 skuImageList中每一项的类型
export interface ResSkuImage extends typeskuImage {
  skuId: number;
}
//类型6-3 获取指定id的SKU 返回类型 skuAttrValueList中每一项的类型
export interface ResSkuAttrValue extends typeSkuAttrValue{
  id: number;
  skuId: number;
  attrName: string;
  valueName: string;
}
//类型6-4 获取指定id的SKU 返回类型 skuSaleAttrValueList中每一项的类型
export interface ResSkuSaleAttrValue extends typeSkuSaleAttrValue {
  id: number;
  skuId: number;
  spuId: number;
  saleAttrName: string;
  saleAttrValueName: string;
}